package filter;

import javabean.User;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
        * 非法访问拦截
        *        拦截的资源：
        *             拦截所有资源 /*
 *        需要放行的资源：
 *           1.放行指定的页面 （无需登录即可访问的页面 例如：登录页面 注册页面）
 *           2.放行静态资源    （image,js,css文件等）
 *           3.放行指定操作    （无需登录即可执行的操作 例如：登录操作，注册操作）
 *           4.放行登录状态     （判断session中的用户信息是否为空）
 *
 *           其他请求需要被拦截跳转到登录页面
 */
@WebFilter("/*")
public class LoginFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //基于HTTP请求
        HttpServletRequest request=(HttpServletRequest)servletRequest;
        HttpServletResponse response=(HttpServletResponse)servletResponse;
        //获取请求的路径
        String url=request.getRequestURI();
        //不知道地址，可以打印输出一下
        System.out.println(url);
        //1.放行指定的页面 （无需登录即可访问的页面 例如：登录页面 注册页面）
        //页面的地址需要改
        //判断是否包含放行页面
        if(url.contains("/login.jsp"))
        {
            filterChain.doFilter(request,response);
            return;
        }
        /*//2.放行静态资源    （image,js,css文件等）与目录的地址一致
        //静态资源目录对应*/
//        if(url.contains("/js")||url.contains("/image")||url.contains("/css"))
//        {
//            filterChain.doFilter(request,response);
//            return;
//        }

        //3.放行指定操作    （无需登录即可执行的操作 例如：登录操作，注册操作）
        //loginServlet的地址即@WebServlet("")里面的地址有关
        if(url.contains("/loginServlet"))
        {
            filterChain.doFilter(request,response);
            return;
        }

        //4.放行登录状态     （判断session中的用户信息是否为空）
        //        //user是session值，与登录成功后存的哪个值（LoginServlet中的getSession值）对应
       /* User usertemp = new User();
        usertemp.setUsername(username2);
        //用session记录登录成功
        request.getSession().setAttribute("usertemp", usertemp);*/
      //  String username= (String) request.getSession().getAttribute("usertemp");
        //不退出的情况下，仍然可以用当前用户，继续登录主页面
        User usertemp=(User) request.getSession().getAttribute("usertemp");

       // String password= (String) request.getSession().getAttribute("usertemp");
        //判断session是否为空
        //if(username!=null)
            if(usertemp!=null)
        {
            System.out.println("session已创建");
            filterChain.doFilter(request,response);
            return;
        }
        //当用户未登录时，拦截请求跳转到登录页面
        response.sendRedirect("login.jsp");
    }

    @Override
    public void destroy() {

    }
}
